Nmap("Network Mapper",网络映射器)是一款开源的,用于网络发现和安全审计的网络安全工具,它用于快速扫描大型网络,或针对某个主机进行详细扫描.Nmap强大的原因是它使用原始的IP报文来进行询问扫描,可以快速准确的判断出网络中有哪些主机,这些主机的操作系统等特征以及运行了什么服务.了解了这些信息,就可以评估出当前主机的网络状况是否安全.
第一个示例
查找当前局域网中所有在线的主机,假设局域网IP网段为192.168.1.1-255.
这种扫描方式被称为ping扫描,因为只从ping的回复来判断主机状态,所以非常迅速,可以看到,在3.18秒内,就完成了针对这255个IP地址的扫描,这条命令适合用来进行主机发现.
当然,因为只是简单的使用ping来回复,那么,如果主机不回复这个ping请求,这样的扫描就不起作用了,其实,上面的这个扫描结果也是不完全的主机列表.
使用ARP Ping
对于上面的情况,即在一个局域网中进行扫描,那么最好的选择应该是ARP Ping扫描,使用下面的命令进行ARP Ping扫描:
上面的图列出了部分扫描输出,从最后的信息可以看出,这次扫描一共扫出了7个地址,比上面的Ping扫描发现了更多的主机,虽然时间花了29.75秒,但为了能完全的扫描出所有主机,这点时间还是很值得等待的.
找到主机列表后,下来就是针对各个主机进行端口的扫描了. Nmap提供了非常多的参数来控制各个扫描,其中,用于端口扫描的选项格式为 -s<X> 这里的X通常是一个大写字符,代表了不同的扫描方式.
经典的SYN半开扫描
上图是使用半开扫描扫一台路由设备得到的信息.使用半开扫描的好处就是,很少有系统或者防火墙会记录半开扫描.所以,不会产生大量的日志文件,也就不容易被目标机器管理员发现.
不过,如果你不在乎产生这些日志文件,还有一个好的方法来扫描:
TCP扫描
这种扫描方式被称作TCP扫描,虽然会在防火墙日志中产生大量的错误记录,但它的好处是不需要root权限.
ftp弹跳扫描
ftp弹跳扫描是端口扫描中唯一不是-s<X>格式的扫描方式,因为它不是直接对端口进行扫描,而是利用ftp服务中的"代理ftp连接"来检测端口,参数中要给出这个ftp服务器的用户名,密码以及服务器地址与ftp端口(通过这个端口来发现更多端口).当然,若此ftp主机允许匿名访问的话,可以省略@前面的用户名及密码.同样,若ftp工作在默认端口21上,port也可以省略.
设置Nmap扫描的端口范围
上面的所有扫描方式,都会使Nmap扫描大约1600个端口,通常我们只想知道一些常用的端口是否开放,那么,可以使用-p参数来指定端口范围.
系统类型与服务版本探测
可以看出,192.168.1.1开启了nginx服务器,并且nginx版本为1.4.2
Nmap成功的分析出这个IP是一台Linux主机,并且内核版本为3.7~3.9.
其它常用选项
-A 同时开启系统探测与服务版本探测(也称激烈模式).
-v 开启冗余模式,这样能得到详细的信息报告.
-e <interface> 使用指定网卡发送数据报文.
-6 启用ipv6扫描.